The simple, platform-independent one-click user actions are simply not feasible using native packages. Reasons include that uninstall just isn't possible, technical problems when communicating with privileged code, different or missing GUIs and fragmented Linux solutions.
For plugin developers the new model basically means that they need to support make install instead of providing packages. This is much easier, and cmake gives tons of support.
For opencpn we get a common, unified platform with not that much platform-dependent code (estimated < 300 lines).
Both ocpn and plugin devs benefits from the more restricted model of what a plugin actually is installation-wise. When using platform packages a plugin cold basically install all sorts of files in all sorts of places, run scripts on install/uninstall, pull in platform dependencies etc. Even if most (almost all?) plugins only installs a library and some data files, any design using platform packages will be hampered by what a platform package might do.
All this boils down to a solution similar to the browsers, IDE:s, multimedia tools etc., out there: use an application-specific format for the plugin (.tar.gz in this case).
The basic counter-question is: compared to bintray, github or what? I can see some general advantages:
It actually seems mature.
We can create multiple repos for installer stuff (metadata + tarballs), test builds and legacy manual installers. Seems hard on github.
With a separate repo for manual packages it becomes more user-friendly (4 files /release instead of 12 for a typical plugin).
Cloudsmith has a rich administrative interface.
For example, the retention policy could be set per repo to keep all, keep the latest etc.
This is important to keep the list of test builds manageable.
Thanks to a clever scheme there is no need for encrypted deployment keys. Makes life easier for plugin devs.
Still, there is no project decision to use cloudsmith, it's a per-plugin decision to make or not. The only condition is that the plugin artifacts are downloadable from an url, on cloudsmith or elsewehere.
Pros Cloudsmith
Mature
Free to opensource
No need for encrypted deployment keys, which makes life easier for plugin devs.
Integrates well with github and circleci.
Rich administrative interface.
Retention policy could be set per repo to keep all, keep the latest etc.
Important to keep the list of test builds manageable.
Can make an organization account and can manage & share permissions (and repositories) for that account.
Opencpn organization on github which creates the Cloudsmith Opencpn Organization?
-
Good for users, easier publishing to Opencpn.org Downloads page links.
Since free/open-source, no billing is required.
Decide who “owns” the opencpn org on Cloudsmith.
Owners can then invite the rest of the plugin developers to the org on Cloudsmith
give them specific read (or write) access to specific repositories.
Maybe each plugin has its own repository, or you create a centralized repository for all of the plugins.
That would be up to the opencpn developers.
Note: Alec's PI Installer does not require centralized repository, flexible source.
Allows creation of multiple repositories to host the stable, unstable, manual versions of the binary and xml files.
With a separate repo for manual packages it becomes more user-friendly (4 files /release instead of 12 for a typical plugin).
Good search features
GitHub Actions (new service available to opensource) should be able to export to cloudsmith
Cons Cloudsmith
Not a fully integrated github service.
Requires another setup and management.
Pros GitHub
Integrates fully with GitHub
Releases are linked back to Commit Hash
Release are serially presented, but searchable
Cons GitHub
Release Tab Repository is serially presented.
Seems hard to create multiple repros on github.
Cannot create multiple repositories in a single account. (stable, unstable, manual)
With some kind of version control, access privileges, etc. What are the policies as regards this critical file? Who can update the official copy, etc? Some ideas:
Start a new project on github called OpenCPN/plugins, with the same maintainers as OpenCPN/OpenCPN.
Move the parts related to building ocpn-plugins.xml to this new project. This includes
plugins/metadata
plugins/icons
parts of tools
parts of CMakeLists.txt which creates ocpn-plugins.xml
The new project basically “exports” ocpn-plugins.xml. It has an independent versioning scheme, perhaps as simple as a single number.
Each release of OpenCPN is distributed with a fixed version of ocpn-plugins.xml.
The code in #1457 is updated so it can update ocpn-plugins.xml by downloading it from from github on user request.
1. The killer feature is the ability to log in to failed builds when running into trouble. 2. Tokens and encryption is easier, particularly for Win Dev (The simplified token/no encryption is actually cloudsmith). 3. Circleci seems quite fast, although Travis is good too. 4. Circleci information menus are very good, example https://circleci.com/gh/rgleason/squiddio_pi/140